package com.yuanfengerp.fileManage.fileController;

import com.yuanfengerp.fileManage.fileService.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/api/files")
public class FileUploadController {
    @Autowired
    FileService fileService;

    // 构造函数，用于依赖注入
    public FileUploadController(FileService fileService) {
        this.fileService = fileService;
    }

    // 处理文件上传请求
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            // 调用 FileService 的 saveFile 方法保存文件
            fileService.saveFile(file);
            // 文件上传成功返回消息
            return "File uploaded successfully!";
        } catch (IOException e) {
            // 文件上传失败返回错误信息
            return "File upload failed: " + e.getMessage();
        }
    }

    // 处理文件下载请求
    @GetMapping("/download/{filename}")
    public ResponseEntity<Resource> downloadFile(@PathVariable String filename) {
        // 调用 FileService 的 downloadFile 方法下载文件
        return fileService.downloadFile(filename);
    }

    // 删除文件的接口
    @DeleteMapping("/delete/{filename}")
    public ResponseEntity<String> deleteFile(@PathVariable String filename) {
        // 调用 FileService 的 deleteFile 方法删除文件
        return fileService.deleteFile(filename);
    }

    // 新增的列出所有文件信息的接口
    @GetMapping("/list")
    public List<FileService.FileDetails> listFiles() {
        // 调用 FileService 的 listFiles 方法获取所有文件信息
        return fileService.listFiles();
    }
}
